package ink.ykb.demo.permission.service;

import java.util.List;

import ink.ykb.demo.permission.entity.RoleRule;
import ink.ykb.demo.permission.entity.Rule;

public interface RoleRuleService {

  /**
   * 添加角色权限关联配置
   * @param roleRule
   */
  void add(RoleRule roleRule);
  
  /**
   * 批量添加角色权限
   * @param roleId
   * @param ruleIds id集合，逗号分隔
   */
  void addBatchRoleRule(Long roleId,String ruleIds);
  
  /**
   * 删除角色权限关联配置
   * @param roleRuleId 关联表主键
   */
  void delete(Long roleRuleId);
  
  /**
   * 删除角色权限关联配置
   * @param roleId 角色主键
   * @param ruleId 权限主键
   */
  void deleteByRoleIdAndRuleId(Long roleId,Long ruleId);
  
  /**
   * 查询所有关联配置信息
   * @return
   */
  List<RoleRule> getRoleRuleList();
  
  /**
   * 查询角色的所有权限关联配置列表
   * @param roleId
   * @return
   */
  List<RoleRule> getRoleRuleListByRoleId(Long roleId);
  
  /**
   * 查询权限的所有关联配置列表
   * @param ruleId
   * @return
   */
  List<RoleRule> getRoleRuleListByRuleId(Long ruleId);
  
  /**
   * 获取角色权限关联配置信息
   * @param roleRuleId
   * @return
   */
  RoleRule getRoleRule(Long roleRuleId);
  
  /**
   * 获取角色权限关联配置信息
   * @param roleId
   * @param ruleId
   * @return
   */
  RoleRule getRoleRule(Long roleId,Long ruleId);

  /**
   * 根据角色查询权限列表
   * @param roleId
   * @return
   */
  List<Rule> getRuleListByRole(Long roleId);
  
  /**
   * 批量删除角色的权限
   * @param userId
   * @param ruleIds id集合，逗号分隔
   */
  void deleteBatchRoleRule(Long roleId,String ruleIds);
  
  /**
   * 批量更新角色的权限
   * @param roleId
   * @param ruleIds
   */
  void updateBatchRoleRule(Long roleId,String ruleIds);

}
